Skip to main content

Quick Start Pull (Merdeka -> CRM)

This guide will help you, our EPC partner, quickly and securely retrieve project data from Merdeka into your CRM.
✅ Authenticate once
✅ Attach your credentials to each request
✅ Pull single or multiple projects — with advanced filters and pagination


Step 1 — Authenticate (Get Your Token)

Base URL Production (live):
https://api.merdeka.app/api/v1

Base URL Development (sandbox):
https://api-dev.merdeka.app/api/v1

Endpoint
POST /auth/email/login

Request Body

{
"email": "your-epc-user@example.com",
"password": "your-password"
}

Response

{ "token": "eyJhbGciOi..." }

👉 Save this token. You’ll need it for all requests.


Step 2 — Add Bearer Token + ClientID to All Requests

Each request must include headers:

Authorization: Bearer <your_token>
ClientID: <your_client_id>
Content-Type: application/json
  • Authorization → your token from Step 1
  • ClientID → The key provided to you by Merdeka

Step 3 — Retrieve Project Data

Merdeka offers two main ways to fetch project data:

🔹 Single Project Endpoint

Base URL Production (live):
https://externals.merdeka.app/api/v1

Base URL Development (sandbox):
https://externals-dev.merdeka.nvpdev.tech/api/v1

Retrieve detailed information for a specific project by its UUID.

GET /integration/projects/{id}

Example

https://externals.merdeka.app/api/v1/integration/projects/7f6a5b8c-1234-4567-abcd-9e0d11223344

Replace {id} with the Merdeka project’s unique UUID.
Response will return full project details.


🔹 All Projects Endpoint

Retrieve a list of projects with pagination:

GET /integration/projects?page={page}&limit={limit}

Example

https://externals.merdeka.app/api/v1/integration/projects?page=1&limit=10

  • page → which page of results to fetch
  • limit → number of projects per page

Step 4 — Advanced Date Filtering (Optional)

The Project List API supports advanced date filters on submittedDate and updatedDate.

Supported Operators

  • gt:{date} → Greater than (after date)
  • lt:{date} → Less than (before date)
  • eq:{date} → Equal to (on date)
  • btw:{date1}_{date2} → Between two dates

Examples


🛠️ Troubleshooting

  • 401 Unauthorized → Token missing or expired → Re-login.
  • 403 Forbidden → Missing/invalid ClientID → Check your ClientID.
  • 400 Bad Request → Invalid params or date format → Re-check query string.

📨 Still unclear? Send us your query and response — we’ll help you debug.